leetcodeJS

Personal solution for leetcode problem using Javascript

View on GitHub

Problem

There is a programming language with only four operations and one variable X:

++X and X++ increments the value of the variable X by 1. –X and X– decrements the value of the variable X by 1.

Initially, the value of X is 0.

Given an array of strings operations containing a list of operations, return the final value of X after performing all the operations.

Example 1:

Input: operations = [”–X”,”X++”,”X++”] Output: 1 Explanation: The operations are performed as follows: Initially, X = 0. –X: X is decremented by 1, X = 0 - 1 = -1. X++: X is incremented by 1, X = -1 + 1 = 0. X++: X is incremented by 1, X = 0 + 1 = 1.

Example 2:

Input: operations = [”++X”,”++X”,”X++”] Output: 3 Explanation: The operations are performed as follows: Initially, X = 0. ++X: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. X++: X is incremented by 1, X = 2 + 1 = 3.

Example 3:

Input: operations = [“X++”,”++X”,”–X”,”X–”] Output: 0 Explanation: The operations are performed as follows: Initially, X = 0. X++: X is incremented by 1, X = 0 + 1 = 1. ++X: X is incremented by 1, X = 1 + 1 = 2. –X: X is decremented by 1, X = 2 - 1 = 1. X–: X is decremented by 1, X = 1 - 1 = 0.

Constraints:

1 <= operations.length <= 100 operations[i] will be either “++X”, “X++”, “–X”, or “X–”.

Pre analysis

Will keep a dictionary for operation on a closure variable.

Another solution

var finalValueAfterOperations = function (operations) {
  let ans = 0;
  for (let i = 0; i < operations.length; i++) {
    if (operations[i] === "--X" || operations[i] === "X--") {
      ans--;
    } else {
      ans++;
    }
  }
  return ans;
};